//虚函数与析构函数，构造函数
#include <iostream>
using namespace std;

class Base
{
public:
    virtual ~Base(){cout << "析构基类的资源" << endl;}
};

class Dervied1 : public Base
{
public:
    ~Dervied1(){cout << "析构子类1的资源" << endl;}
};

class Dervied2 : public Base
{
public:
    ~Dervied2(){cout << "析构子类2的资源" << endl;}
};

int main(int argc, char const *argv[])
{
    Base *p = new Dervied1();
    delete p;

    // Dervied2 d;
    // Base &r = d;
    
    return 0;
}
//虚函数与构造函数，构造函数不能是虚函数
//如果一个类不会成为另一个类的子类，那么析构函数就不用写成虚函数，否则应该写成虚函数